package Tests;

import java.util.ArrayList;

import Biblioteca.Busqueda;
import Reproductor.Almacen;
import Reproductor.Cancion;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestBuscar extends TestCase{

	private Almacen almacenNormal;
	private ArrayList<Cancion> arrayAux;
	private ArrayList<Cancion> arrayBusqueda;
	private ArrayList<Cancion> arrayBiblioteca;
	private Busqueda busqueda;
	private Cancion cancion1;
	private Cancion cancion2;
	private Cancion cancion3;
	private Cancion cancion4;
	private Cancion cancion5;

	public TestBuscar(String name) {
		super(name);
	}
	
	protected void setUp(){
		// Constructora: S nombre, S artista, S album, S formato, S numero, URL d, int duracion
		cancion1=new Cancion("a","b","x","a","1",0,"C:/hlocal/m1.mp3");
		cancion2=new Cancion("aa","bb","c","b","2",0,"C:/hlocal/m2.mp3");
		cancion3=new Cancion("a a","x","c","c","3",0,"C:/hlocal/m3.mp3");
		cancion4=new Cancion("x","b","cc","d","4",0,"C:/hlocal/m4.mp3");
		cancion5=new Cancion("y","y","c","e","4",0,"C:/hlocal/m5.mp3");
		
		almacenNormal=new Almacen();
		almacenNormal.anadirBiblioteca(cancion1); // pos 0
		almacenNormal.anadirBiblioteca(cancion2); // pos 1
		almacenNormal.anadirBiblioteca(cancion3); // pos 2
		almacenNormal.anadirBiblioteca(cancion4); // pos 3
		almacenNormal.anadirBiblioteca(cancion5); // pos 4
		
		arrayAux=new ArrayList<Cancion>();
		
		busqueda=new Busqueda();
		arrayBusqueda=new ArrayList<Cancion>();
		arrayBiblioteca=new ArrayList<Cancion>();
		arrayBiblioteca = almacenNormal.listarBiblioteca();
	}

	
	
	public void testBuscarPorTitulo(){
		String titulo = "a";
		arrayAux.add(cancion1); // Titulo = "a"
		arrayAux.add(cancion2); // Titulo = "aa"
		arrayAux.add(cancion3); // Titulo = "a a"
		arrayBusqueda=arrayBiblioteca;
			
		arrayBusqueda = busqueda.buscarPorTitulo(arrayBusqueda, titulo);
		for (int i=0; i<arrayAux.size(); i++){
			assertEquals(arrayAux.get(i).getTitulo(), arrayBusqueda.get(i).getTitulo());
		}
		arrayAux.clear();
		
	}
	
	public void testBuscarPorArtista(){
		String artista = "b";
		arrayAux.add(cancion1); // Artista = "b"
		arrayAux.add(cancion2); // Artista = "bb"
		arrayAux.add(cancion4); // Artista = "b"
		arrayBusqueda=arrayBiblioteca;
		
		arrayBusqueda = busqueda.buscarPorArtista(arrayBusqueda, artista);
		for (int i=0; i<arrayAux.size(); i++){
			assertEquals(arrayAux.get(i).getArtista(), arrayBusqueda.get(i).getArtista());
		}
		arrayAux.clear();
		
	}
	
	public void testBuscarPorAlbum(){
		String album = "c";
		arrayAux.add(cancion2); // Album = "c"
		arrayAux.add(cancion3); // Album = "c"
		arrayAux.add(cancion4); // Album = "cc"
		arrayAux.add(cancion5); // Album = "c"
		arrayBusqueda=arrayBiblioteca;
		
		
		arrayBusqueda = busqueda.buscarPorAlbum(arrayBusqueda, album);
		for (int i=0; i<arrayAux.size(); i++){
			assertEquals(arrayAux.get(i).getAlbum(), arrayBusqueda.get(i).getAlbum());
		}
		arrayAux.clear();
	}
	
	public void testBuscarPorNumero(){
		String numero = "4";
		arrayAux.add(cancion4); // Numero = "4"
		arrayAux.add(cancion5); // Numero = "4"
		arrayBusqueda=arrayBiblioteca;
		
		arrayBusqueda = busqueda.buscarPorNumero(arrayBusqueda, numero);
		for (int i=0; i<arrayAux.size(); i++){
			assertEquals(arrayAux.get(i).getNumero(), arrayBusqueda.get(i).getNumero());
		}
		arrayAux.clear();
	}
	
	public static Test suite() {

        //TestSuite suite = new TestSuite(TestOrdenar.class);

         TestSuite suite = new TestSuite();
         suite.addTest(new TestBuscar("testBuscarPorTitulo"));
         suite.addTest(new TestBuscar("testBuscarPorArtista"));
         suite.addTest(new TestBuscar("testBuscarPorAlbum"));
         suite.addTest(new TestBuscar("testBuscarPorNumero"));
         return suite;
    }

	protected void tearDown(){
		cancion1=null;
		cancion2=null;
		cancion3=null;
		cancion4=null;
		cancion5=null;
		almacenNormal=null;
		busqueda=null;
		arrayBiblioteca=null;
		arrayBusqueda=null;
		arrayAux=null;
		
	}
	

}
